package model

type Info struct {
	Urls      []string `json:"urls"`       // 需要下载的url切片
	ThreadNum int      `json:"thread_num"` // 定义默认下载的线程数
	Url       *UrlInfo `json:"url_info"`   // 存储url信息
	UrlFile   string   `json:"url_file"`   // 存储url信息文件
	Err       error    `json:"err"`        // 存储错误信息
	Debug     bool     `json:"debug"`      // 是否开启debug模式
	Save      bool     `json:"save"`       // 是否保存文件到磁盘
	UrlNum    int      `json:"url_num"`    // url数量
	MaxSize   int64    `json:"max_size"`   // 最大下载文件大小
	TimeStop  int      `json:"time_stop"`  // 停止下载时间
	TimeStart int      `json:"time_start"` // 开始下载时间
	MemoryMon *MemoryMonitor `json:"memory_monitor"` // 内存监控器
}

type UrlInfo struct {
	IsSupport     bool   `json:"is_support"`    // 是否支持分块下载
	ContentLength int64  `json:"ContentLength"` // 文件长度(字节)
	FileSizeMb    int    `json:"file_size_mb"`  // 文件大小(MB)
	Url           string `json:"url"`           // URL
	BlockSize     int    `json:"block_size"`    // 定义每个任务的块大小
	ThreadNum     int    `json:"thread_num"`    // 此URL下载的线程数
}

// Part 分片下载的结构体
type Part struct {
	index int    // 分片序号
	start int64  // 分片开始位置
	end   int64  // 分片结束位置
	url   string // 文件URL
}
